SETEUID(2) | Linux Programmer's Manual | SETEUID(2) |
名前¶
seteuid, setegid - 実効ユーザー ID や 実効グループ ID を設定する
書式¶
#include <sys/types.h>
#include <unistd.h>
int seteuid(uid_t euid);
int setegid(gid_t egid);
glibc
向けの機能検査マクロの要件
(feature_test_macros(7) 参照):
seteuid(), setegid(): _BSD_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
説明¶
seteuid() は呼び出し元のプロセスの実効ユーザー ID を設定する。 非特権ユーザーのプロセスが実効ユーザー ID に設定できるのは、 実ユーザー ID・実効ユーザー ID・保存 set-user-ID のいずれかだけである。
setegid() は「ユーザー」ではなく「グループ」に対して全く同じことを行う。
返り値¶
成功した場合は 0 が返される。 エラーの場合は -1 が返され、 errno が適切に設定される。
エラー¶
- EPERM
- 呼び出し元のプロセスに特権がなく (Linux では seteuid() の場合に CAP_SETUID ケーパビリティ (capability) がなく、 setegid() の場合に CAP_SETGID ケーパビリティがない)、 euid (または egid) が実ユーザー (グループ) ID、または実効ユーザー (グループ) ID、 または保存 set-user-ID (保存 set-group-ID) ではない。
準拠¶
4.3BSD, POSIX.1-2001.
注意¶
実効ユーザー (グループ) ID を保存 set-user-ID (保存 set-group-ID) に 設定することが、Linux 1.1.37 (1.1.38) から可能になった。 全てのシステムにおいて _POSIX_SAVED_IDS をチェックすべきである。
libc4, libc5, glibc 2.0 では seteuid(euid) は setreuid(-1, euid) と同じなので、保存 set-user-ID を変更するかもしれない。 glibc 2.1 では setresuid(-1, euid, -1) と同じなので、保存 set-user-ID を変更しない。 同様のことが setegid() にも言える。
関連項目¶
geteuid(2), setresuid(2), setreuid(2), setuid(2), capabilities(7), credentials(7)
2007-07-26 | Linux |